package com.example.mylibrary.network

import io.reactivex.Observer
import io.reactivex.disposables.Disposable

abstract class CustomObserver<T : BaseData> : Observer<T> {
    override fun onSubscribe(d: Disposable) {
        // 开始请求数据方法

    }

    override fun onNext(t: T) {
        // 请求成功后返回数据方法
        when (t.code) {
            0 -> {
                // 请求数据异常，将异常信息填充到异常中
                onFailure(IllegalAccessException(t.msg))
            }

            1 -> {
                onSuccess(t)
            }

            -1 -> {
                // 登录超时操作
                onFailure(IllegalAccessException(t.msg))
            }
        }
    }

    override fun onError(e: Throwable) {
        // 请求错误返回错误提示方法
        onFailure(e)
    }

    override fun onComplete() {
        // 请求完成方法

    }

    abstract fun onFailure(e: Throwable)

    abstract fun onSuccess(t: T)
}